
package ParaProfiler;

/**
 *
 * Clase para agregar algoritmos de ordenamiento
 * Tomado de http://www.algolist.net/Algorithms/Sorting/Insertion_sort
 * Adaptado para funcionar con Comparables
 */
public class InsertSort {
    /**
     * Insertion Sort
     * @param Arreglo de Comparables 
     */
    public Comparable[] sort(Comparable[] arr) {
        Comparable newValue;
        int i, j;
        //Iteramos para cada elemento
        for (i = 1; i < arr.length; i++) {
                newValue = arr[i];
                j = i;
                //Ahora comparamos los anteriores al elemento actual
                while (j > 0 && arr[j - 1].compareTo(newValue)>0) {
                    arr[j] = arr[j - 1];
                    j--;
                }
                arr[j] = newValue;
        }
        return arr;
    }
}
